/**
 * 
 */
package com.nari.heatshare.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.nari.coreframe.service.IGenericService;
import com.nari.heatshare.model.IAssignMeterDataGather;
import com.nari.heatshare.model.IAssignMeterDataStatistics;
import com.nari.heatshare.utils.queryvo.AssignMeterDataStatisExtendQuery;
import com.nari.platform.model.PageCond;
import com.nari.platform.model.ResponseMsg;
import com.nari.platform.model.ResultWithPageCond;

/**
 * 
 * @author yw
 * @date 2013-9-24
 */
public interface IAssignMeterDataStatisticsService extends IGenericService<IAssignMeterDataStatistics, String> {

	/**
	 * 分页查询分配表数据上传的任务批次统计
	 * 分配表数据上传的任务批次条件：集中器号、抄表日期
	 * @param concentratorNo 集中器号
	 * @param startDate 抄表日期起始日期
	 * @param endDate 抄表日期结束日期
	 * @param pageCond
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-10-25
	 */
	public ResultWithPageCond<IAssignMeterDataStatistics> queryMeterDataStatisPage(String concentratorNo, 
			Date startDate, Date endDate, PageCond pageCond) throws Exception;
	
	/**
	 * 删除GPRS批次上传数据
	 * @param meterDataStatisUID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-12-2
	 */
	public ResponseMsg deleteMeterDataUploadBatch(String meterDataStatisUID) throws Exception;
	
	/**
	 * 批次新增分配表上传任务数据
	 * @param meterDataList
	 * @param concentratorNo
	 * @param recordTime
	 * @param dataFileUID 掌机文件UID
	 * @param dataType 数据类型
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2015-1-15
	 */
	public ResponseMsg saveMeterDataBatch(List<IAssignMeterDataGather> meterDataList, 
			String concentratorNo, Date recordTime, String dataFileUID, 
			Integer dataType) throws Exception;
	
	/**
	 * 根据上传任务标识(集中器号、抄表日期)查询分配表数据统计结果
	 * @param concentratorNo
	 * @param recordTime
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-11-13
	 */
	public IAssignMeterDataStatistics queryStatisByUploadMission(String concentratorNo, 
			Date recordTime) throws Exception;
	
	/**
	 * 新增或更新分配表数据的任务采集信息
	 * 任务标识字段：集中器号、抄表日期
	 * @param concentratorNo
	 * @param recordTime
	 * @return 返回任务批次的唯一标识码UID
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2015-1-17
	 */
	public String saveOrUpdateAmdStatis(String concentratorNo, Date recordTime) throws Exception;
	
	/**
	 * 查询分配表数据上传批次的痕迹信息
	 * @param statisList
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-5-8
	 */
	public Map<String, String> queryMeterDataStatisReferTrace(List<IAssignMeterDataStatistics> 
			statisList) throws Exception;
	
	/**
	 * 根据分配表数据批次列表查询其对应的档案资料扩展信息
	 * @param amdStatisList
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2015-1-25
	 */
	public Map<String, AssignMeterDataStatisExtendQuery> queryAmdStatisExtend(List<IAssignMeterDataStatistics> 
			amdStatisList) throws Exception;
}
